package com.numberone.tree;

/**
 * Created on 2019/12/30.
 *
 * @author Gray
 * @since 1.0
 */
public class Test {

    public static class AAA implements Comparable<AAA>{

        public int age;
        public String name;
        public String address;

        public AAA(int age){
            this.age = age;
        }

        @Override
        public int compareTo(AAA o) {
            return o.age - age;
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        //初始化
//        BPlusTree<Integer,AAA> stack = new BPlusTree<Integer,AAA>(4);
//
//        stack.put(11,new AAA(11));
//        stack.put(12,new AAA(12));
//        stack.put(13,new AAA(13));
//        stack.put(14,new AAA(14));
//        stack.put(15,new AAA(15));
//        stack.put(16,new AAA(16));
//        stack.put(5,new AAA(5));
//        stack.put(1,new AAA(1));
//
//        AAA sss = stack.get(5);
//
//
//        stack.remove(13);
//        System.out.println();
//
////        stack.put(new AAA(14));
//
//        System.out.println(stack);
    }

    // 测试
//    public static void main(String[] args) {
//
//        int size = 10;
//        int order = 3;
//        testRandomInsert(size, order);
//
//        testOrderInsert(size, order);
//
//        testRandomSearch(size, order);
//
//        testOrderSearch(size, order);
//
//        testRandomRemove(size, order);
//
//        testOrderRemove(size, order);
//    }
//
//    private static void testOrderRemove(int size, int order) {
//        BPlusTree<Integer, Integer> tree = new BPlusTree<Integer, Integer>(order);
//        System.out.println("\nTest order remove " + size + " datas, of order:"
//                + order);
//        System.out.println("Begin order insert...");
//        for (int i = 0; i < size; i++) {
//            tree.insertOrUpdate(i, i);
//        }
//        tree.printBPlusTree();
//        System.out.println("Begin order remove...");
//        long current = System.currentTimeMillis();
//        for (int j = 0; j < size; j++) {
//            if (tree.remove(j) == null) {
//                System.err.println("得不到数据:" + j);
//                break;
//            }
//        }
//        long duration = System.currentTimeMillis() - current;
//        System.out.println("time elpsed for duration: " + duration);
//        tree.printBPlusTree();
//        System.out.println(tree.getHeight());
//    }
//
//    private static void testRandomRemove(int size, int order) {
//        BPlusTree<Integer, Integer> tree = new BPlusTree<Integer, Integer>(order);
//        System.out.println("\nTest random remove " + size + " datas, of order:"
//                + order);
//        Random random = new Random();
//        boolean[] a = new boolean[size + 10];
//        List<Integer> list = new ArrayList<Integer>();
//        int randomNumber = 0;
//        System.out.println("Begin random insert...");
//        for (int i = 0; i < size; i++) {
//            randomNumber = random.nextInt(size);
//            a[randomNumber] = true;
//            list.add(randomNumber);
//            tree.insertOrUpdate(randomNumber, randomNumber);
//        }
//        tree.printBPlusTree();
//        System.out.println("Begin random remove...");
//        long current = System.currentTimeMillis();
//        for (int j = 0; j < size; j++) {
//            randomNumber = list.get(j);
//            if (a[randomNumber]) {
//                if (tree.remove(randomNumber) == null) {
//                    System.err.println("得不到数据:" + randomNumber);
//                    break;
//                } else {
//                    a[randomNumber] = false;
//                }
//            }
//        }
//        long duration = System.currentTimeMillis() - current;
//        System.out.println("time elpsed for duration: " + duration);
//        tree.printBPlusTree();
//        System.out.println(tree.getHeight());
//    }
//
//    private static void testOrderSearch(int size, int order) {
//        BPlusTree<Integer, Integer> tree = new BPlusTree<Integer, Integer>(order);
//        System.out.println("\nTest order search " + size + " datas, of order:"
//                + order);
//        System.out.println("Begin order insert...");
//        for (int i = 0; i < size; i++) {
//            tree.insertOrUpdate(i, i);
//        }
//        tree.printBPlusTree();
//        System.out.println("Begin order search...");
//        long current = System.currentTimeMillis();
//        for (int j = 0; j < size; j++) {
//            if (tree.get(j) == null) {
//                System.err.println("得不到数据:" + j);
//                break;
//            }
//        }
//        long duration = System.currentTimeMillis() - current;
//        System.out.println("time elpsed for duration: " + duration);
//    }
//
//    private static void testRandomSearch(int size, int order) {
//        BPlusTree<Integer, Integer> tree = new BPlusTree<Integer, Integer>(order);
//        System.out.println("\nTest random search " + size + " datas, of order:"
//                + order);
//        Random random = new Random();
//        boolean[] a = new boolean[size + 10];
//        int randomNumber = 0;
//        System.out.println("Begin random insert...");
//        for (int i = 0; i < size; i++) {
//            randomNumber = random.nextInt(size);
//            a[randomNumber] = true;
//            tree.insertOrUpdate(randomNumber, randomNumber);
//        }
//        tree.printBPlusTree();
//        System.out.println("Begin random search...");
//        long current = System.currentTimeMillis();
//        for (int j = 0; j < size; j++) {
//            randomNumber = random.nextInt(size);
//            if (a[randomNumber]) {
//                if (tree.get(randomNumber) == null) {
//                    System.err.println("得不到数据:" + randomNumber);
//                    break;
//                }
//            }
//        }
//        long duration = System.currentTimeMillis() - current;
//        System.out.println("time elpsed for duration: " + duration);
//    }
//
//    private static void testRandomInsert(int size, int order) {
//        BPlusTree<Integer, Integer> tree = new BPlusTree<Integer, Integer>(order);
//        System.out.println("\nTest random insert " + size + " datas, of order:"
//                + order);
//        Random random = new Random();
//        int randomNumber = 0;
//        long current = System.currentTimeMillis();
//        for (int i = 0; i < size; i++) {
//            randomNumber = random.nextInt(size * 10);
//            System.out.print(randomNumber + " ");
//            tree.insertOrUpdate(randomNumber, randomNumber);
//        }
//        long duration = System.currentTimeMillis() - current;
//        System.out.println("time elpsed for duration: " + duration);
//        tree.printBPlusTree();
//        System.out.println(tree.getHeight());
//    }
//
//    private static void testOrderInsert(int size, int order) {
//        BPlusTree<Integer, Integer> tree = new BPlusTree<Integer, Integer>(order);
//        System.out.println("\nTest order insert " + size + " datas, of order:"
//                + order);
//        long current = System.currentTimeMillis();
//        for (int i = 0; i < size; i++) {
//            tree.insertOrUpdate(i, i);
//        }
//        long duration = System.currentTimeMillis() - current;
//        System.out.println("time elpsed for duration: " + duration);
//        tree.printBPlusTree();
//    }


}
